package bigbeard.tools.net.api.client;
/**
 * @author bigbeard on 2022-09-29
 */

import bigbeard.tools.net.api.DataArrivalCallback;
import bigbeard.tools.net.api.StateChangeCallback;

public interface IClient {
    /**
     * 连接到服务器
     *
     * @param host  主机
     * @param port  端口
     * @param other 附加信息
     * @throws Exception 异常
     */
    void connect(String host, int port, String other) throws Exception;

    /**
     * 断开连接
     */
    void disconnect();

    /**
     * 发送信息
     *
     * @param data 数据
     * @return 发送的数据长度
     * @throws Exception 发送过程中的异常
     */
    int send(byte[] data) throws Exception;

    /**
     * 发送信息
     *
     * @param msg 数据
     * @throws Exception 发送过程中的异常
     */
    void send(String msg) throws Exception;

    /**
     * 接受数据
     *
     * @param callback 接收数据的回调
     */
    void onDataArrival(DataArrivalCallback callback);

    /**
     * 状态监控
     *
     * @param callback 状态回调
     */
    void onStateChange(StateChangeCallback callback);
}
